package cc.cc4414.cc02.system.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cc.cc4414.cc02.system.entity.Authority;
import cc.cc4414.cc02.system.entity.Role;

/**
 * @author cc 2018年7月15日
 */
public interface RoleService {
	/**
	 * 查询所有角色信息
	 * 
	 * @return 所有角色
	 */
	List<Role> findAll();

	/**
	 * 通过角色id查找该角色所拥有的所有权限
	 * 
	 * @param roleId
	 *            角色id
	 * @return 该角色拥有的所有权限
	 */
	List<Authority> findAuthorityByRoleId(Long roleId);

	/**
	 * 新增角色
	 * 
	 * @param role
	 *            新增的角色
	 */
	void save(Role role);

	/**
	 * 通过角色名查询角色
	 * 
	 * @param name
	 *            角色名
	 * @return 查询到的角色
	 */
	Role findByName(String name);

	/**
	 * 修改指定id角色的描述
	 * 
	 * @param roleId
	 *            角色id
	 * @param description
	 *            描述
	 */
	void updateDescription(Long roleId, String description);

	/**
	 * 通过角色id删除角色
	 * 
	 * @param roleId
	 *            角色id
	 */
	@Transactional
	void delete(Long roleId);

	/**
	 * 修改角色所拥有的所有权限
	 * 
	 * @param roleId
	 *            角色id
	 * @param authorityIds
	 *            角色所拥有的权限id
	 */
	@Transactional
	void updateRoleAuthority(Long roleId, Long[] authorityIds);
}
